package com.sbl.dao;


import com.sbl.domain.QueryVo;
import com.sbl.domain.User;
import com.sbl.domain.UserNew;

import java.util.List;

/**
 *
 * 用户的持久层接口
 *      在Mybatis中，接口名称和mapper是一样的
 *        IUserDao和IUserMapper是一样的
 */
public interface IUserDao {

    /**
     * 查询所有操作
     * @return
     */
    List<User> findAll();

    /**
     * 查询所有操作
     * @return
     */
    List<UserNew> findAllNew();

    /**
     * 保存用户
     * @param user
     */
    void saveUser(User user);

    /**
     * 更新用户
     * @param user
     */
    void updateUser(User user);

    /**
     * 根据Id删除用户
     * @param userId
     */
    void deleteUser(Integer userId);

    /**
     * 根据id查询用户信息
     * @param userId
     * @return
     */
    User findById(Integer userId);

    /**
     * 根据名称模糊查询用户信息
     * @param username
     * @return
     */
    List<User> findByName(String username);

    /**
     * 查询总用户数
     * @return
     */
    int findTotal();

    /**
     * 根据queryVo中的条件查询用户,
     *      queryVo是包装类，多个条件查询组成
     *          综合查询条件
     */
    List<User> findUserByVo(QueryVo vo);


    //================================第 3 天=============================
    /**
     * 根据传入参数条件
     * @param user 查询的条件：有可能有用户名，有可能有性别，也有可能有地址，还有可能是都有
     * @return
     */
    List<User> findUserByCondition(User user);


    /**
     * 根据queryvo中提供的id集合，查询用户信息
     * @param vo
     * @return
     */
    List<User> findUserInIds(QueryVo vo);
}
